//ACCEPTED
#include <cstdio>
#include <iostream>
#include <queue>

using namespace std;

class Par{
	public:
	
	Par(){
		x=y=0;
	}
	Par(int a, int b){
		x = a;
		y = b;
	}
	int queimarAdjacente();

	int x,y;
};
//baixo, cima , dir, esq
int v[4][2]={{0,1},{0,-1},{1,0},{-1,0}};

bool a[2001][2001];
int k, n, m, i, j;

int burned, total;
queue<Par> fila;


int Par::queimarAdjacente(){
	int e,f;
	for(int i=0;i<4;i++){
		e=v[i][0];
		f=v[i][1];
		if( 0<x+e && x+e<=n )
			if( 0<y+f && y+f<=m )//posicao valida
				if(a[x+e][y+f])//se nao foi queimado
				{
					if(burned+1==total){
						printf("%d %d", x+e, y+f);
						return 0;
					}
					burned++;
					a[x+e][y+f]=false;
					Par p( x+e,y+f );//cria o cara que vai queimar os adjacentes
					fila.push(p);//inseri na fila
				}
	}
	return 1;
}



void process(){
	Par p;
	p=fila.front();
	fila.pop();
	while(p.queimarAdjacente() ){
		p=fila.front();
		fila.pop();
	}
}


int main(){
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	
	scanf("%d %d", &n, &m);
	scanf("%d", &k);
	
	
	total=n*m;
	burned=k;
	
	if(k==total){//se for queimar tudo de uma vez
		printf("1 1");
		return 0;
	}
	
	//inicializa
	for(i=1; i<=n;i++){
		for(j=1; j<=m;j++){
			a[i][j]=true;//nao queimada
		}
	}
	
	//as queimadas
	int xx, yy;
	for(i=1;i<=k;i++){
		scanf("%d %d", &xx, &yy);
		a[ xx  ][  yy  ]=false;//foi queimada
		Par p(xx,yy);
		fila.push(p);//inseri na fila
	}
	
	//processar
	process();
	
	return 0;
}
